﻿using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
namespace ECommerce.DAO.SQL.Productos
{
    public static class Package
    {
        //Select Methods Helpers
        public static ECommerce.Model.Productos.Package[] GetPackages(string StoreProcedure, ECommerce.DAO.SQL.Parámetro[] Parámetros)
        {
            ECommerce.Model.Productos.Package Package = new ECommerce.Model.Productos.Package();
            Type DynamicType = Package.GetType();
            return ECommerce.DAO.SQL.Productos.Package.GetPackagesFromObjects(ECommerce.DAO.SQL.SqlHelper.Get(StoreProcedure, Parámetros, DynamicType));
        }
        public static ECommerce.Model.Productos.Package[] GetPackagesFromObjects(ECommerce.Model.Objeto[] Objetos)
        {
            List<ECommerce.Model.Productos.Package> result = new List<ECommerce.Model.Productos.Package>();
            ECommerce.Model.Productos.Package Package;
            foreach (ECommerce.Model.Objeto Objeto in Objetos)
            {
                Package = new ECommerce.Model.Productos.Package();
                Package = (ECommerce.Model.Productos.Package)Objeto;
                if (Package != null)
                    if (Package.Id != 0)
                        result.Add(Package);
            }
            return result.ToArray();
        }

        //Select Methods
        public static ECommerce.Model.Productos.Package GetPackageById(int Id)
        {
            List<ECommerce.DAO.SQL.Parámetro> Parámetros = new List<ECommerce.DAO.SQL.Parámetro>();
            ECommerce.DAO.SQL.Parámetro Parámetro = new ECommerce.DAO.SQL.Parámetro("@Id", System.Data.SqlDbType.BigInt, Id);
            Parámetros.Add(Parámetro);
            ECommerce.Model.Productos.Package[] Packages = ECommerce.DAO.SQL.Productos.Package.GetPackages("GetPackagesById", Parámetros.ToArray());
            if (Packages != null)
                if (Packages.Length > 0)
                    return Packages[0];
            return null;
        }
        public static ECommerce.Model.Productos.Package[] GetPackagesDelSistema()
        {
            List<ECommerce.DAO.SQL.Parámetro> Parámetros = new List<ECommerce.DAO.SQL.Parámetro>();
            return ECommerce.DAO.SQL.Productos.Package.GetPackages("GetPackagesDelSistema", Parámetros.ToArray());
        }
        public static ECommerce.Model.Productos.Package[] GetPackagesByProductoId(int IdProducto)
        {
            List<ECommerce.DAO.SQL.Parámetro> Parámetros = new List<ECommerce.DAO.SQL.Parámetro>();
            ECommerce.DAO.SQL.Parámetro Parámetro = new Parámetro("@Id", System.Data.SqlDbType.BigInt, IdProducto);
            Parámetros.Add(Parámetro);
            return ECommerce.DAO.SQL.Productos.Package.GetPackages("GetPackagesByProductoId", Parámetros.ToArray());
        }
        public static ECommerce.Model.Productos.Package GetPackageByIdProducto(int Id)
        {
            List<ECommerce.DAO.SQL.Parámetro> Parámetros = new List<ECommerce.DAO.SQL.Parámetro>();
            ECommerce.DAO.SQL.Parámetro Parámetro = new ECommerce.DAO.SQL.Parámetro("@Id", System.Data.SqlDbType.BigInt, Id);
            Parámetros.Add(Parámetro);
            ECommerce.Model.Productos.Package[] Packages = ECommerce.DAO.SQL.Productos.Package.GetPackages("GetPackageByIdProducto", Parámetros.ToArray());
            if (Packages != null)
                if (Packages.Length > 0)
                    return Packages[0];
            return null;
        }
        public static ECommerce.Model.Productos.Package GetPackageByIdItemCarrito(int Id)
        {
            List<ECommerce.DAO.SQL.Parámetro> Parámetros = new List<ECommerce.DAO.SQL.Parámetro>();
            ECommerce.DAO.SQL.Parámetro Parámetro = new ECommerce.DAO.SQL.Parámetro("@Id", System.Data.SqlDbType.BigInt, Id);
            Parámetros.Add(Parámetro);
            ECommerce.Model.Productos.Package[] Packages = ECommerce.DAO.SQL.Productos.Package.GetPackages("GetPackageByIdItemCarrito", Parámetros.ToArray());
            if (Packages != null)
                if (Packages.Length > 0)
                    return Packages[0];
            return null;
        }

        //Insert Methods
        public static int SetPackage(ECommerce.Model.Productos.Package Package)
        {
            List<ECommerce.DAO.SQL.Parámetro> Parámetros = new List<ECommerce.DAO.SQL.Parámetro>();
            ECommerce.DAO.SQL.Parámetro Parámetro = new ECommerce.DAO.SQL.Parámetro("@Id", System.Data.SqlDbType.BigInt, Package.Id);
            Parámetros.Add(Parámetro);
            Parámetro = new ECommerce.DAO.SQL.Parámetro("@CantidadXBulto", System.Data.SqlDbType.NVarChar, Package.CantidadXBulto);
            Parámetros.Add(Parámetro);
            return ECommerce.DAO.SQL.SqlHelper.Insert("SetPackage", Parámetros.ToArray());
        }
        public static void AddPackageToProducto(ECommerce.Model.Productos.Package Package, ECommerce.Model.Productos.Producto Producto)
        {
            List<ECommerce.DAO.SQL.Parámetro> Parámetros = new List<ECommerce.DAO.SQL.Parámetro>();
            ECommerce.DAO.SQL.Parámetro Parámetro = new ECommerce.DAO.SQL.Parámetro("@IdProducto", System.Data.SqlDbType.BigInt, Producto.Id);
            Parámetros.Add(Parámetro);
            Parámetro = new ECommerce.DAO.SQL.Parámetro("@IdPackage", System.Data.SqlDbType.BigInt, Package.Id);
            Parámetros.Add(Parámetro);
            ECommerce.DAO.SQL.SqlHelper.Insert("AddPackageToProducto", Parámetros.ToArray());
        }        
    }
}
